<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        //预解析， 就是 当浏览器执行时，会把var 和function 这两个声明提到最顶级执行
        // 然后其他代码依次罗列
        fn()
        var num = 10;

        function fn() {
            console.log(num);
            var num = 20;
        }




        // 相当于执行了以下代码
        // var num;

        // function fn() {
        //     var num;
        //     console.log(num);
        //     num = 20
        // }
        // num = 10;
        // fn()//undefined

        //预解析步骤
        function fun() {
            // var a=b=c=9;
            /*  相当于 var a=9; b=9;c=9 这样的连写代表 Var a=9 ;而 b跟c是没有声明的 
                所以当做全局变量使用 能被外部调用 
                真正的连写是这样的： var a=9,b=9,c=9; 这样才是 var a =9;
                                                            var b=9;
                                                            var c=9;   
             */
            var a = 9;
            b = 9;
            c = 9
            console.log(a); //输出9
            console.log(b); ////输出9
            console.log(c); //输出9
        }
        fun();

        console.log(b); //输出9
        console.log(c); //输出9
        console.log(a); //输出报错 没有全局变量
    </script>
</head>

<body>

</body>

</html>